package my.design.state;

/**
 * @author zp
 * @version 1.0
 * @description: TODO
 * @date 2022/10/30 16:44
 */
public abstract class State {
    /**
     * 活动提审
     *
     * @param currentStatus 当前状态
     * @return 执⾏行行结果
     */
    public abstract Result arraignment(Enum<Status>
            currentStatus);

    /**
     * 审核通过
     *
     * @param currentStatus 当前状态
     * @return 执⾏行行结果
     */
    public abstract Result checkPass(Enum<Status>
            currentStatus);

    /**
     * 审核拒绝
     *
     * @param currentStatus 当前状态
     * @return 执⾏行行结果
     */
    public abstract Result checkRefuse(Enum<Status>
            currentStatus);

    /**
     * 撤审撤销
     * @param currentStatus 当前状态
     * @return 执⾏行行结果
     */
    public abstract Result checkRevoke(Enum<Status>
            currentStatus);

    /**
     * 活动关闭
     *
     * @param currentStatus 当前状态
     * @return 执⾏行行结果
     */
    public abstract Result close(Enum<Status>
            currentStatus);

    /**
     * 活动开启
     *
     * @param currentStatus 当前状态
     * @return 执⾏行行结果
     */
    public abstract Result open(Enum<Status>
            currentStatus);

    /**
     * 活动执⾏行行
     *
     * @param currentStatus 当前状态
     * @return 执⾏行行结果
     */
    public abstract Result doing(Enum<Status>
            currentStatus);
}
